﻿using System.Collections.Generic;
using System.Linq;

namespace Transliterator
{
    public class Transliterator : ITransliterator
    {
        public Transliterator()
        {
            InicijalizujTabeluZamena();
        }

        private Dictionary<string, string> Slova { get; set; }

        #region ITransliterator Members

        public string TransliterujUCirilicu(string input)
        {
            return Slova.Keys.Aggregate(input, (current, slovo) => current.Replace(slovo, Slova[slovo]));
        }

        public string TransliterujULatinicu(string input)
        {
            return Slova.Values.Aggregate(input,
                                          (current, slovo) =>
                                          current.Replace(slovo, Slova.First(c => c.Value == slovo).Key));
        }

        #endregion

        private void InicijalizujTabeluZamena()
        {
            Slova = new Dictionary<string, string>
                        {
                            {"Lj", "Љ"},
                            {"LJ", "Љ"},
                            {"lj", "љ"},
                            {"Nj", "Њ"},
                            {"NJ", "Њ"},
                            {"nj", "њ"},
                            {"đ", "ђ"},
                            {"Đ", "Ђ"},
                            {"Dj", "Ђ"},
                            {"DJ", "Ђ"},
                            {"dj", "ђ"},
                            {"Dž", "Џ"},
                            {"DŽ", "Џ"},
                            {"dž", "џ"},
                            {"A", "А"},
                            {"B", "Б"},
                            {"V", "В"},
                            {"G", "Г"},
                            {"D", "Д"},
                            {"E", "Е"},
                            {"Ž", "Ж"},
                            {"Z", "З"},
                            {"I", "И"},
                            {"J", "Ј"},
                            {"K", "К"},
                            {"L", "Л"},
                            {"M", "М"},
                            {"N", "Н"},
                            {"O", "О"},
                            {"P", "П"},
                            {"R", "Р"},
                            {"S", "С"},
                            {"T", "Т"},
                            {"Ć", "Ћ"},
                            {"U", "У"},
                            {"F", "Ф"},
                            {"H", "Х"},
                            {"C", "Ц"},
                            {"Č", "Ч"},
                            {"Š", "Ш"},
                            {"a", "а"},
                            {"b", "б"},
                            {"v", "в"},
                            {"g", "г"},
                            {"d", "д"},
                            {"e", "е"},
                            {"ž", "ж"},
                            {"z", "з"},
                            {"i", "и"},
                            {"j", "ј"},
                            {"k", "к"},
                            {"l", "л"},
                            {"m", "м"},
                            {"n", "н"},
                            {"o", "о"},
                            {"p", "п"},
                            {"r", "р"},
                            {"s", "с"},
                            {"t", "т"},
                            {"ć", "ћ"},
                            {"u", "у"},
                            {"f", "ф"},
                            {"h", "х"},
                            {"c", "ц"},
                            {"č", "ч"},
                            {"š", "ш"}
                        };

            #region Ubacivanje slova

            #endregion
        }
    }
}